﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<windows.h>
#include<string.h>
#include<math.h>
//多个字符从两端移动，向中间汇聚
//int main() {
//	char arr1[] = { "Welcome to my house!" };
//	char arr2[] = { "********************" };
//	int left = 0;
//	size_t right = strlen(arr1)-1;
//	printf("%s\n", arr2);
//	while (left <= right) {
//		Sleep(1000);
//		arr2[left] = arr1[left];
//		arr2[right] = arr1[right];
//		left++;
//		right--;
//		printf("%s\n", arr2);
//	}
//	return 0;
//}


//⼆分查找，折半查找。
//int main() {
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int left = 0;
//	int right = sizeof(arr) / sizeof(arr[0]) - 1;
//	int key = 0;   //key表示要查找的数组元素
//	int mid = 0;   //数组下标
//	int find = 0;
//	scanf("%d", &key);
//	while (left <= right) {
//		mid = (left + right) / 2;
//		if (arr[mid] > key) {
//			right = mid - 1;
//		}
//		else if (arr[mid] < key) {
//			left = mid + 1;
//		}
//		else {
//			find = 1;
//			break;
//		}
//	}
//	if (find == 1) {
//		printf("找到了该数组元素，数组下标为%d\n", mid);
//	}
//	else {
//		printf("未找到该数组元素。");
//	}
//	return 0;
//}

//int main() {
//	double r = 16.0;
//	double d = sqrt(r);
//	printf("%lf", d);
//	return 0;
//	
//}

//写⼀个加法函数，完成2个整型变量的加法操作。
//int Add(int x, int y) {
//	return x + y;
// }
//
//
//int main() {
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int r = Add(a,b);
//	printf("%d", r);
//	return 0;
//}

//数组做函数参数
//写⼀个函数将⼀个整型数组的内容，全部置为 - 1，再写⼀个函数打印数组的内容。
//void set_arr(int arr[], int sz) {
//	int i = 0;
//	for ( i = 0; i < sz; i++) {
//		arr[i] = -1;
//	}
//}
//
//void print_arr(int arr[], int sz) {
//	int j = 0;
//	for (j = 0; j < sz; j++) {
//		printf("%d ", arr[j]);
//	}
//}
//int main() {
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	set_arr(arr,sz);
//	print_arr(arr,sz);
//	return 0;
//}

//BC107 矩阵转置
//int main() {
//	int m, n;
//	scanf("%d %d", &n, &m);
//	int arr[n][m];
//	for (int i = 0; i < n; i++) {
//		for (int j = 0; j < m; j++) {
//			scanf("%d", &arr[i][j]);
//		}
//	}
//	for (int i = 0; i < m; i++) {
//		for (int j = 0; j < n; j++) {
//			printf("%d ", arr[j][i]);
//		}
//		printf("\n");
//	}
//
//
//	return 0;
//}



//BC100 有序序列合并
//int main() {
//	int n, m;
//	int arr1[1000] = { 0 };
//	int arr2[1000] = { 0 };
//	scanf("%d%d", &n, &m);
//	for (int i = 0; i < n; i++) {
//		scanf("%d", &arr1[i]);
//	}
//	for (int i = 0; i < m; i++) {
//		scanf("%d", &arr2[i]);
//	}
//	int i = 0;
//	int j = 0;
//	while (i < n && j < m) {
//		if (arr1[i] < arr2[j]) {
//			printf("%d ", arr1[i]);
//			i++;
//		 }
//		else {
//			printf("%d ", arr2[j]);
//			j++;
//		}
//	}
//	while (i < n) {
//		printf("%d ", arr1[i]);
//		i++;
//	}
//	while (j < m) {
//		printf("%d ", arr2[j]);
//		j++;
//	}
//	return 0;
//}

//二分查找 - 函数实现
//int bin_search(int arr[], int left, int right, int key) {
//	int mid = 0;
//	while (left <= right) {
//		mid = (left + right) / 2;
//		if (key < arr[mid]) {
//			right = mid - 1;
//		}
//		else if (key > arr[mid]) {
//			left = mid + 1;
//		}
//		else {
//			return mid;
//		}
//	}
//	return -1;
//}
//
//
//int main() {
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int len = sizeof(arr) / sizeof(arr[0]);
//	int r = bin_search(arr,0,len-1,8);
//	if (r == -1) {
//		printf("未找到该元素");
//	}
//	else {
//		printf("找到该元素，下标为%d", r);
//	}
//	return 0;
//}

//用函数实现乘法口诀表
//void Table(int n) {
//	for (int i = 1; i <= n; i++) {
//		for (int j = 1; j <= i; j++) {
//			printf("%d*%d=%d ", i, j, i * j);
//		}
//		printf("\n");
//	}
//}
//
//
//int main() {
//	int n = 0;
//	scanf("%d",&n);
//	Table(n);
//	return 0;
//}



//使用函数实现数组操作
//创建一个整形数组，完成对数组的操作
//
//实现函数init() 初始化数组为全0
//实现print()  打印数组的每个元素
//实现reverse()  函数完成数组元素的逆置。
//要求：自己设计以上函数的参数，返回值。
void Init(int arr[],int len) {
	for (int i = 0; i < len; i++) {
		arr[i] = i;
	}
}

void Print(int arr[],int len) {
	for (int i = 0; i < len; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

void Reverse(int arr[], int len) {
	int left = 0;
	int right = len - 1;
	while (left < right) {
		int temp = arr[left];
		arr[left] = arr[right];
		arr[right] = temp;
		left++;
		right--;
	}
}
 
//void Reverse(int arr[], int len) {
//	for (int i = len-1; i >= 0; i--) {
//		printf("%d ", arr[i]);
//	}
//}

int main() {
	int arr[10] = {0};
	int len = sizeof(arr) / sizeof(arr[0]);
	Init(arr,len);
	Print(arr, len);
	Reverse(arr, len);
	Print(arr, len);
	return 0;
}